home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Speech.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  13.6 KB  |  381 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Speech.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __SPEECH__
  18. #define __SPEECH__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MEMORY__
  27. #include <Memory.h>
  28. #endif
  29. /*    #include <MixedMode.h>                                        */
  30.  
  31. #ifndef __FILES__
  32. #include <Files.h>
  33. #endif
  34. /*    #include <OSUtils.h>                                        */
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. #if GENERATINGPOWERPC
  41. #pragma options align=mac68k
  42. #endif
  43.  
  44. #ifdef __CFM68K__
  45. #pragma lib_export on
  46. #endif
  47.  
  48.  
  49. enum {
  50.     kTextToSpeechSynthType        = 'ttsc',
  51.     kTextToSpeechVoiceType        = 'ttvd',
  52.     kTextToSpeechVoiceFileType    = 'ttvf',
  53.     kTextToSpeechVoiceBundleType = 'ttvb'
  54. };
  55.  
  56. enum {
  57.     kNoEndingProsody            = 1,
  58.     kNoSpeechInterrupt            = 2,
  59.     kPreflightThenPause            = 4
  60. };
  61.  
  62. enum {
  63.     kImmediate                    = 0,
  64.     kEndOfWord                    = 1,
  65.     kEndOfSentence                = 2
  66. };
  67.  
  68. /*------------------------------------------*/
  69. /* GetSpeechInfo & SetSpeechInfo selectors    */
  70. /*------------------------------------------*/
  71. enum {
  72.     soStatus                    = 'stat',
  73.     soErrors                    = 'erro',
  74.     soInputMode                    = 'inpt',
  75.     soCharacterMode                = 'char',
  76.     soNumberMode                = 'nmbr',
  77.     soRate                        = 'rate',
  78.     soPitchBase                    = 'pbas',
  79.     soPitchMod                    = 'pmod',
  80.     soVolume                    = 'volm',
  81.     soSynthType                    = 'vers',
  82.     soRecentSync                = 'sync',
  83.     soPhonemeSymbols            = 'phsy',
  84.     soCurrentVoice                = 'cvox',
  85.     soCommandDelimiter            = 'dlim',
  86.     soReset                        = 'rset',
  87.     soCurrentA5                    = 'myA5',
  88.     soRefCon                    = 'refc',
  89.     soTextDoneCallBack            = 'tdcb',
  90.     soSpeechDoneCallBack        = 'sdcb',
  91.     soSyncCallBack                = 'sycb',
  92.     soErrorCallBack                = 'ercb',
  93.     soPhonemeCallBack            = 'phcb',
  94.     soWordCallBack                = 'wdcb',
  95.     soSynthExtension            = 'xtnd',
  96.     soSoundOutput                = 'sndo'
  97. };
  98.  
  99. /*------------------------------------------*/
  100. /* Speaking Mode Constants                     */
  101. /*------------------------------------------*/
  102. enum {
  103.     modeText                    = 'TEXT',                        /* input mode constants                     */
  104.     modePhonemes                = 'PHON',
  105.     modeNormal                    = 'NORM',                        /* character mode and number mode constants */
  106.     modeLiteral                    = 'LTRL'
  107. };
  108.  
  109. enum {
  110.     soVoiceDescription            = 'info',
  111.     soVoiceFile                    = 'fref'
  112. };
  113.  
  114. struct SpeechChannelRecord {
  115.     long                            data[1];
  116. };
  117. typedef struct SpeechChannelRecord SpeechChannelRecord;
  118.  
  119. typedef SpeechChannelRecord *SpeechChannel;
  120.  
  121. struct VoiceSpec {
  122.     OSType                            creator;
  123.     OSType                            id;
  124. };
  125. typedef struct VoiceSpec VoiceSpec;
  126.  
  127.  
  128. enum {
  129.     kNeuter                        = 0,
  130.     kMale                        = 1,
  131.     kFemale                        = 2
  132. };
  133.  
  134. struct VoiceDescription {
  135.     long                            length;
  136.     VoiceSpec                        voice;
  137.     long                            version;
  138.     Str63                            name;
  139.     Str255                            comment;
  140.     short                            gender;
  141.     short                            age;
  142.     short                            script;
  143.     short                            language;
  144.     short                            region;
  145.     long                            reserved[4];
  146. };
  147. typedef struct VoiceDescription VoiceDescription;
  148.  
  149. struct VoiceFileInfo {
  150.     FSSpec                            fileSpec;
  151.     short                            resID;
  152. };
  153. typedef struct VoiceFileInfo VoiceFileInfo;
  154.  
  155. struct SpeechStatusInfo {
  156.     Boolean                            outputBusy;
  157.     Boolean                            outputPaused;
  158.     long                            inputBytesLeft;
  159.     short                            phonemeCode;
  160. };
  161. typedef struct SpeechStatusInfo SpeechStatusInfo;
  162.  
  163. struct SpeechErrorInfo {
  164.     short                            count;
  165.     OSErr                            oldest;
  166.     long                            oldPos;
  167.     OSErr                            newest;
  168.     long                            newPos;
  169. };
  170. typedef struct SpeechErrorInfo SpeechErrorInfo;
  171.  
  172. struct SpeechVersionInfo {
  173.     OSType                            synthType;
  174.     OSType                            synthSubType;
  175.     OSType                            synthManufacturer;
  176.     long                            synthFlags;
  177.     NumVersion                        synthVersion;
  178. };
  179. typedef struct SpeechVersionInfo SpeechVersionInfo;
  180.  
  181. struct PhonemeInfo {
  182.     short                            opcode;
  183.     Str15                            phStr;
  184.     Str31                            exampleStr;
  185.     short                            hiliteStart;
  186.     short                            hiliteEnd;
  187. };
  188. typedef struct PhonemeInfo PhonemeInfo;
  189.  
  190. struct PhonemeDescriptor {
  191.     short                            phonemeCount;
  192.     PhonemeInfo                        thePhonemes[1];
  193. };
  194. typedef struct PhonemeDescriptor PhonemeDescriptor;
  195.  
  196. struct SpeechXtndData {
  197.     OSType                            synthCreator;
  198.     Byte                            synthData[2];
  199. };
  200. typedef struct SpeechXtndData SpeechXtndData;
  201.  
  202. struct DelimiterInfo {
  203.     Byte                            startDelimiter[2];
  204.     Byte                            endDelimiter[2];
  205. };
  206. typedef struct DelimiterInfo DelimiterInfo;
  207.  
  208. typedef pascal void (*SpeechTextDoneProcPtr)(SpeechChannel parameter0, long parameter1, Ptr *parameter2, long *parameter3, long *parameter4);
  209. typedef pascal void (*SpeechDoneProcPtr)(SpeechChannel parameter0, long parameter1);
  210. typedef pascal void (*SpeechSyncProcPtr)(SpeechChannel parameter0, long parameter1, OSType parameter2);
  211. typedef pascal void (*SpeechErrorProcPtr)(SpeechChannel parameter0, long parameter1, OSErr parameter2, long parameter3);
  212. typedef pascal void (*SpeechPhonemeProcPtr)(SpeechChannel parameter0, long parameter1, short parameter2);
  213. typedef pascal void (*SpeechWordProcPtr)(SpeechChannel parameter0, long parameter1, long parameter2, short parameter3);
  214.  
  215. #if GENERATINGCFM
  216. typedef UniversalProcPtr SpeechTextDoneUPP;
  217. typedef UniversalProcPtr SpeechDoneUPP;
  218. typedef UniversalProcPtr SpeechSyncUPP;
  219. typedef UniversalProcPtr SpeechErrorUPP;
  220. typedef UniversalProcPtr SpeechPhonemeUPP;
  221. typedef UniversalProcPtr SpeechWordUPP;
  222. #else
  223. typedef SpeechTextDoneProcPtr SpeechTextDoneUPP;
  224. typedef SpeechDoneProcPtr SpeechDoneUPP;
  225. typedef SpeechSyncProcPtr SpeechSyncUPP;
  226. typedef SpeechErrorProcPtr SpeechErrorUPP;
  227. typedef SpeechPhonemeProcPtr SpeechPhonemeUPP;
  228. typedef SpeechWordProcPtr SpeechWordUPP;
  229. #endif
  230.  
  231. enum {
  232.     uppSpeechTextDoneProcInfo = kPascalStackBased
  233.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  234.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  235.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr*)))
  236.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long*)))
  237.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long*))),
  238.     uppSpeechDoneProcInfo = kPascalStackBased
  239.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  240.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  241.     uppSpeechSyncProcInfo = kPascalStackBased
  242.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  243.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  244.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(OSType))),
  245.     uppSpeechErrorProcInfo = kPascalStackBased
  246.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  247.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  248.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(OSErr)))
  249.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))),
  250.     uppSpeechPhonemeProcInfo = kPascalStackBased
  251.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  252.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  253.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short))),
  254.     uppSpeechWordProcInfo = kPascalStackBased
  255.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  256.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  257.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  258.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  259. };
  260.  
  261. #if GENERATINGCFM
  262. #define NewSpeechTextDoneProc(userRoutine)        \
  263.         (SpeechTextDoneUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechTextDoneProcInfo, GetCurrentArchitecture())
  264. #define NewSpeechDoneProc(userRoutine)        \
  265.         (SpeechDoneUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechDoneProcInfo, GetCurrentArchitecture())
  266. #define NewSpeechSyncProc(userRoutine)        \
  267.         (SpeechSyncUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechSyncProcInfo, GetCurrentArchitecture())
  268. #define NewSpeechErrorProc(userRoutine)        \
  269.         (SpeechErrorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechErrorProcInfo, GetCurrentArchitecture())
  270. #define NewSpeechPhonemeProc(userRoutine)        \
  271.         (SpeechPhonemeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechPhonemeProcInfo, GetCurrentArchitecture())
  272. #define NewSpeechWordProc(userRoutine)        \
  273.         (SpeechWordUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechWordProcInfo, GetCurrentArchitecture())
  274. #else
  275. #define NewSpeechTextDoneProc(userRoutine)        \
  276.         ((SpeechTextDoneUPP) (userRoutine))
  277. #define NewSpeechDoneProc(userRoutine)        \
  278.         ((SpeechDoneUPP) (userRoutine))
  279. #define NewSpeechSyncProc(userRoutine)        \
  280.         ((SpeechSyncUPP) (userRoutine))
  281. #define NewSpeechErrorProc(userRoutine)        \
  282.         ((SpeechErrorUPP) (userRoutine))
  283. #define NewSpeechPhonemeProc(userRoutine)        \
  284.         ((SpeechPhonemeUPP) (userRoutine))
  285. #define NewSpeechWordProc(userRoutine)        \
  286.         ((SpeechWordUPP) (userRoutine))
  287. #endif
  288.  
  289. #if GENERATINGCFM
  290. #define CallSpeechTextDoneProc(userRoutine, parameter0, parameter1, parameter2, parameter3, parameter4)        \
  291.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechTextDoneProcInfo, (parameter0), (parameter1), (parameter2), (parameter3), (parameter4))
  292. #define CallSpeechDoneProc(userRoutine, parameter0, parameter1)        \
  293.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechDoneProcInfo, (parameter0), (parameter1))
  294. #define CallSpeechSyncProc(userRoutine, parameter0, parameter1, parameter2)        \
  295.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechSyncProcInfo, (parameter0), (parameter1), (parameter2))
  296. #define CallSpeechErrorProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  297.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechErrorProcInfo, (parameter0), (parameter1), (parameter2), (parameter3))
  298. #define CallSpeechPhonemeProc(userRoutine, parameter0, parameter1, parameter2)        \
  299.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechPhonemeProcInfo, (parameter0), (parameter1), (parameter2))
  300. #define CallSpeechWordProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  301.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechWordProcInfo, (parameter0), (parameter1), (parameter2), (parameter3))
  302. #else
  303. #define CallSpeechTextDoneProc(userRoutine, parameter0, parameter1, parameter2, parameter3, parameter4)        \
  304.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3), (parameter4))
  305. #define CallSpeechDoneProc(userRoutine, parameter0, parameter1)        \
  306.         (*(userRoutine))((parameter0), (parameter1))
  307. #define CallSpeechSyncProc(userRoutine, parameter0, parameter1, parameter2)        \
  308.         (*(userRoutine))((parameter0), (parameter1), (parameter2))
  309. #define CallSpeechErrorProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  310.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3))
  311. #define CallSpeechPhonemeProc(userRoutine, parameter0, parameter1, parameter2)        \
  312.         (*(userRoutine))((parameter0), (parameter1), (parameter2))
  313. #define CallSpeechWordProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  314.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3))
  315. #endif
  316.  
  317. extern pascal NumVersion SpeechManagerVersion(void)
  318.  FOURWORDINLINE(0x203C, 0x0000, 0x000C, 0xA800);
  319. extern pascal OSErr MakeVoiceSpec(OSType creator, OSType id, VoiceSpec *voice)
  320.  FOURWORDINLINE(0x203C, 0x0604, 0x000C, 0xA800);
  321. extern pascal OSErr CountVoices(short *numVoices)
  322.  FOURWORDINLINE(0x203C, 0x0108, 0x000C, 0xA800);
  323. extern pascal OSErr GetIndVoice(short index, VoiceSpec *voice)
  324.  FOURWORDINLINE(0x203C, 0x030C, 0x000C, 0xA800);
  325. extern pascal OSErr GetVoiceDescription(VoiceSpec *voice, VoiceDescription *info, long infoLength)
  326.  FOURWORDINLINE(0x203C, 0x0610, 0x000C, 0xA800);
  327. extern pascal OSErr GetVoiceInfo(VoiceSpec *voice, OSType selector, void *voiceInfo)
  328.  FOURWORDINLINE(0x203C, 0x0614, 0x000C, 0xA800);
  329. extern pascal OSErr NewSpeechChannel(VoiceSpec *voice, SpeechChannel *chan)
  330.  FOURWORDINLINE(0x203C, 0x0418, 0x000C, 0xA800);
  331. extern pascal OSErr DisposeSpeechChannel(SpeechChannel chan)
  332.  FOURWORDINLINE(0x203C, 0x021C, 0x000C, 0xA800);
  333. extern pascal OSErr SpeakString(StringPtr s)
  334.  FOURWORDINLINE(0x203C, 0x0220, 0x000C, 0xA800);
  335. extern pascal OSErr SpeakText(SpeechChannel chan, Ptr textBuf, long textBytes)
  336.  FOURWORDINLINE(0x203C, 0x0624, 0x000C, 0xA800);
  337. extern pascal OSErr SpeakBuffer(SpeechChannel chan, Ptr textBuf, long textBytes, long controlFlags)
  338.  FOURWORDINLINE(0x203C, 0x0828, 0x000C, 0xA800);
  339. extern pascal OSErr StopSpeech(SpeechChannel chan)
  340.  FOURWORDINLINE(0x203C, 0x022C, 0x000C, 0xA800);
  341. extern pascal OSErr StopSpeechAt(SpeechChannel chan, long whereToStop)
  342.  FOURWORDINLINE(0x203C, 0x0430, 0x000C, 0xA800);
  343. extern pascal OSErr PauseSpeechAt(SpeechChannel chan, long whereToPause)
  344.  FOURWORDINLINE(0x203C, 0x0434, 0x000C, 0xA800);
  345. extern pascal OSErr ContinueSpeech(SpeechChannel chan)
  346.  FOURWORDINLINE(0x203C, 0x0238, 0x000C, 0xA800);
  347. extern pascal short SpeechBusy(void)
  348.  FOURWORDINLINE(0x203C, 0x003C, 0x000C, 0xA800);
  349. extern pascal short SpeechBusySystemWide(void)
  350.  FOURWORDINLINE(0x203C, 0x0040, 0x000C, 0xA800);
  351. extern pascal OSErr SetSpeechRate(SpeechChannel chan, Fixed rate)
  352.  FOURWORDINLINE(0x203C, 0x0444, 0x000C, 0xA800);
  353. extern pascal OSErr GetSpeechRate(SpeechChannel chan, Fixed *rate)
  354.  FOURWORDINLINE(0x203C, 0x0448, 0x000C, 0xA800);
  355. extern pascal OSErr SetSpeechPitch(SpeechChannel chan, Fixed pitch)
  356.  FOURWORDINLINE(0x203C, 0x044C, 0x000C, 0xA800);
  357. extern pascal OSErr GetSpeechPitch(SpeechChannel chan, Fixed *pitch)
  358.  FOURWORDINLINE(0x203C, 0x0450, 0x000C, 0xA800);
  359. extern pascal OSErr SetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo)
  360.  FOURWORDINLINE(0x203C, 0x0654, 0x000C, 0xA800);
  361. extern pascal OSErr GetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo)
  362.  FOURWORDINLINE(0x203C, 0x0658, 0x000C, 0xA800);
  363. extern pascal OSErr TextToPhonemes(SpeechChannel chan, Ptr textBuf, long textBytes, Handle phonemeBuf, long *phonemeBytes)
  364.  FOURWORDINLINE(0x203C, 0x0A5C, 0x000C, 0xA800);
  365. extern pascal OSErr UseDictionary(SpeechChannel chan, Handle dictionary)
  366.  FOURWORDINLINE(0x203C, 0x0460, 0x000C, 0xA800);
  367.  
  368. #ifdef __CFM68K__
  369. #pragma lib_export off
  370. #endif
  371.  
  372. #if GENERATINGPOWERPC
  373. #pragma options align=reset
  374. #endif
  375.  
  376. #ifdef __cplusplus
  377. }
  378. #endif
  379.  
  380. #endif /* __SPEECH__ */
  381.